// 包路径：控制器必须放在controller包下
package org.diancai.diancai.controller;

// 导入工具类（因为工具类在utils包，需要手动导入）
import org.diancai.diancai.utils.Result;
import org.diancai.diancai.utils.PageResult;
import org.diancai.diancai.utils.DateUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

// @RestController：标记这是一个控制器，且所有方法返回JSON数据（适合接口开发）
@RestController
public class DishController {

    // 示例1：查询菜品列表（带分页，调用PageResult和Result）
    // 前端访问路径：http://localhost:8080/dish/list
    @GetMapping("/dish/list")
    public Result<PageResult<String>> getDishList(
            // 接收前端传入的分页参数（默认第1页，每页10条）
            @RequestParam(defaultValue = "1") Integer pageNum,
            @RequestParam(defaultValue = "10") Integer pageSize
    ) {
        // 1. 模拟从数据库查询数据（实际开发中会调用Service层）
        List<String> dishList = new ArrayList<>();
        for (int i = 0; i < pageSize; i++) {
            // 调用DateUtils格式化当前时间（工具类调用示例）
            String createTime = DateUtils.format(new Date());
            dishList.add("菜品" + (i + 1) + "（创建时间：" + createTime + "）");
        }
        // 模拟总条数（实际开发中从数据库查询总记录数）
        Long total = 100L;

        // 2. 用PageResult封装分页数据（工具类调用示例）
        PageResult<String> pageResult = new PageResult<>(total, dishList, pageNum, pageSize);

        // 3. 用Result封装最终响应（工具类调用示例）
        return Result.success(pageResult);
    }

    // 示例2：根据ID查询单个菜品（调用Result）
    // 前端访问路径：http://localhost:8080/dish/1
    @GetMapping("/dish/{id}")
    public Result<String> getDishById(Integer id) {
        if (id == null || id <= 0) {
            // 调用Result.fail返回错误信息（工具类调用示例）
            return Result.fail("参数错误：菜品ID不能为空或小于0");
        }
        // 模拟查询到的菜品信息
        String dishInfo = "菜品ID：" + id + "，名称：宫保鸡丁，价格：38元";
        // 调用Result.success返回成功信息（工具类调用示例）
        return Result.success(dishInfo);
    }
}